import _config from './config/index.js'; // 导入私有配置
import md5 from '@/common/lib/md5.min.js'
// 这里service是自己做的本地信息存储封装的一个配置文件，方便管理使用

export default function $http(options) {
    // 进行url字符串拼接，_config.url是再config中配置要请求的域名或者id+端口号这样方便管理，
    // options.url是index中请求配置的，完美拼接
  options.url = _config.baseUrl + options.url;

  
  var config = {
	  data: {},
	  //  设置请求的 header，header 中不能设置 Referer。
	  header: {},
	  //  （需大写）有效值：OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT  
	  method: "POST",
	  //  json    如果设为json，会尝试对返回的数据做一次 JSON.parse    
	  dataType: "json",
	  //  text    设置响应的数据类型。合法值：text、arraybuffer  1.7.0
	  responseType: "text",
	  //  收到开发者服务成功返回的回调函数    
	  success() {},
	  //  接口调用失败的回调函数 
	  fail() {},
	  //  接口调用结束的回调函数（调用成功、失败都会执行）
	  complete() {},
  }
  
  return new Promise((resolve, reject) => {
    // 拦截请求
	config.header.token=uni.getStorageSync("token") //这里是调用本地存储配置文件的方法
	var nowDate = new Date();
	var month = nowDate.getMonth() + 1 < 10 ? "0" + (nowDate.getMonth() + 1):nowDate.getMonth() + 1;
	var day = nowDate.getDate() < 10 ? "0" + nowDate.getDate() : nowDate.getDate();
	var hour = nowDate.getHours() < 10 ? "0" + nowDate.getHours() : nowDate.getHours();
	var minute = nowDate.getMinutes() < 10 ? "0" + nowDate.getMinutes() : nowDate.getMinutes();
	var time = nowDate.getFullYear()+ ""+ month+"" + day+""+hour+""+minute;
	
	config.header.currentTime= time;
    config.complete = (response) => {
       // 登录失效这边后台是返回403看情况
	   if(response.data.code === 3){
			var loginInfo = uni.getStorageSync("autoInfo")
			var params = {
				phone : '',
				password : '',
				loginType:"1",
				flag:false
			}
			
			if(loginInfo!=null&&loginInfo!=''&&loginInfo!=undefined){
				params.phone = loginInfo.phone;
				params.password = loginInfo.password;
				if(loginInfo.flag){
					params.flag = loginInfo.flag;
				}
				Vue.prototype.$store.dispatch('login', params).then(res => {
					if (res.code === 1) {
						uni.setStorageSync("token",res.result.token)
					} else {
						uni.showToast({
							icon: 'none',
							position: 'center',
							title: "登录信息失效，请重新登录"
						});
						uni.reLaunch({
							url: '/pages/login/login',
						})
						return;
					}
				}).catch(() => {
					uni.showToast({
						icon: 'none',
						position: 'center',
						title: "登录信息失效，请重新登录"
					});
					uni.reLaunch({
						url: '/pages/login/login',
					})
				})
			}
	   }
	   
       //  request請求访问成功  这里返回的时候response.data才是请求返回的结果
       resolve(response.data);


    }
    // 开始请求
    uni.request(Object.assign({},config, options));
  })
}
